
const path = require('path');// 处理文件路径
const json = require('@rollup/plugin-json');// 在打包过程中导入 JSON 文件 
const { babel } = require('@rollup/plugin-babel');// 用于将 ES6+ 代码转换为向后兼容的 JavaScript 代码。

// 将相对路径解析为绝对路径
const resolveFile = function(filePatah) {
    return path.join(__dirname,filePatah);
}

const plugins = [
    json({
        compact:true // 生成的 JSON 输出是紧凑的（没有多余的空白字符）。


    }),
    // 配置为处理 .js 和 .ts 文件，
    // 使用 bundled 模式的 Babel helpers，
    // 并指定了 babel/env 预设，
    // 目标浏览器为全球使用率大于 1% 的浏览器、最后两个版本，并且不包括 IE 8 及以下版本。
    // cjs – CommonJS，适用于 Node 环境和其他打包工具（别名：commonjs）
    // es – 将 bundle 保留为 ES 模块文件，适用于其他打包工具，以及支持 <script type=module> 标签的浏览器。（别名：esm，module）
    // iife – 自执行函数，适用于 <script> 标签（如果你想为你的应用程序创建 bundle，那么你可能会使用它）。iife 表示“自执行 函数表达式”
    babel({
        extensions:[".js",".ts"],
        babelHelpers:"bundled",
        presets:[
            [
                "@babel/env",
                {
                    targets:{
                        browsers: ["> 1%","last 2 versions","not ie <= 8"]
                    }
                }
            ]
        ]
    })
];
module.exports = [
    // 指定了输入文件、输出文件、输出格式和插件
    // 将 src/webEyeSDK.js 文件打包成三种不同的格式（IIFE、ESM、CJS），并生成相应的 sourcemap 文件。
    // 这样做的目的是为了让这个库可以在不同的环境中使用（如浏览器、Node.js 等），并且能够兼容不同的模块系统
    {
        plugins,
        input: resolveFile("../src/webEyeSDK.js"),
        output: {
            file: resolveFile("../dist/monitor.js"),
            format:"iife",
            name:"monitor",
            sourcemap: true
        }
    },
    {
        plugins,
        input: resolveFile("../src/webEyeSDK.js"),
        output: {
            file: resolveFile("../dist/monitor.esm.js"),
            format:"esm",
            name:"monitor",
            sourcemap: true
        }
    },
    {
        plugins,
        input: resolveFile("../src/webEyeSDK.js"),
        output: {
            file: resolveFile("../dist/monitor.cjs.js"),
            format:"cjs",
            name:"monitor",
            sourcemap: true
        }
    },
]